package DailyPractice;

import java.util.Scanner;

public class NewCoderDay5 {

    //    描述
//    BoBo写了一个十六进制整数ABCDEF，他问KiKi对应的十进制整数是多少。
//
//    输入描述：
//    无
//    输出描述：
//    十六进制整数ABCDEF对应的十进制整数，所占域宽为15。
//    备注：
//    printf可以使用使用格式控制串“%md”输出域宽为m的十进制整数
    public static void PrintNum() {//牛客编译不通过，但代码没错
        Scanner in = new Scanner(System.in);
        System.out.println("请输入一个十六进制数字：");
        String hexString = in.next();
        int hexNum = Integer.valueOf(hexString, 16);
        System.out.printf("%15d", hexNum);
    }

    //牛客可通过答案
    public static void NewPrintHexNum() {
        String kk = "ABCDEF";
        int hex = Integer.parseInt(kk, 16);
        System.out.printf("%15d", hex);
        System.out.println();
    }

    //    描述
//    我们处理的整数通常用十进制表示，在计算机内存中是以二进制补码形式存储，但通常二进制表示的整数比较长，为了便于在程序设计过程中理解和处理数据，通常采用八进制和十六进制，缩短了二进制补码表示的整数，但保持了二进制数的表达特点。请输出十进制整数1234对应的八进制和十六进制。
//
//    输入描述：
//    无
//    输出描述：
//    十进制整数1234对应的八进制和十六进制（字母大写），用空格分开，并且要求，在八进制前显示前导0，在十六进制数前显示前导0X。
//    备注：
//    printf可以使用使用格式控制串“%o”、“%X”分别输出八进制整数和十六进制整数，并使用修饰符“#”控制前导显示
    public static void PrintHONum() {
        int a = 1234;
        System.out.printf("%#o", a);
        System.out.printf(" %#X", a);//特别标注：printf可以使用使用格式控制串“%o”、“%X”分别输出八进制整数和十六进制整数，并使用修饰符“#”控制前导显示
    }

    //    描述
//    牛牛从键盘读入一个字符，一个整数，一个单精度浮点数，按顺序输出它们，并用空格分隔，浮点数保留 6 位小数。
//    输入描述：
//    读入一个字符，一个整数，一个单精度浮点数用换行符隔开，
//    输出描述：
//    按顺序输出字符、整数、单精度浮点数，用空格分隔，浮点数保留 6 位小数
//            示例1
//    输入：
//    a
//    1
//    1.23
//    输出：
//    a 1 1.230000
    public static void Print() {
        Scanner in = new Scanner(System.in);
        String string = in.nextLine();
        int num = in.nextInt();
        float num1 = in.nextFloat();
        System.out.print(string + " " + num + " ");
        System.out.printf("%.6f", num1);

    }

    //    描述
//    读入 3 个整数，牛牛尝试以后两个数字占 8 个空格的宽度靠右对齐输出。
//    输入描述：
//    输入三个整数，用空格隔开。
//    输出描述：
//    输出 3 个整数以第二三个数字占 8 个空格靠右对齐输出
//            示例1
//    输入：
//            2 7 5
//    输出：
//            2       7       5
    public static void PrintTreeNum() {
        Scanner in = new Scanner(System.in);
        int num1 = in.nextInt();
        int num2 = in.nextInt();
        int num3 = in.nextInt();
        System.out.printf("%d%8d%8d", num1, num2, num3);
    }

    public static void main(String[] args) {
        // PrintNum();//输出一个十六进制数，并以十进制输出
        PrintHONum();//输入一个数字，并输出其八进制，十六进制
        Print();//对应格式输出
        PrintTreeNum();//输出三个数字，中间对齐

    }
}
